package com.michaellou.encript;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;


public class Sign {
	
	private static String SEP1="&";
	private static String SEP2="=";
	private static Sign sign=null;
	private Sign(){
		
	}
	public static Sign getInstance(){
		if(null==sign){
			synchronized(Sign.class){
				if(null==sign){
					sign=new Sign();
				}
			}
		}
		return sign;
	}
	public String createSign(String content){
		String sign="";
		if(null!=content&&!"".equals(content)){
			sign=MD5Support.MD5(content);
		}
		return sign;
	}
	public static void main(String[] argv){
		System.out.print(MD5Support.MD5("admin"));
	}
	public String sort(String queryStr){
		String content="";
		if(null!=queryStr){
			Map map=new HashMap();
			String[] params=queryStr.split(SEP1);
            if (params != null)
    			for(int i = 0;i < params.length;i++){
                    String str = params[i];
    				map.put(str.split(SEP2)[0], str.split(SEP2)[1]);
    			}
            
			if(0 < map.size()){
				Iterator it=map.entrySet().iterator();
				while(it.hasNext()){
					Entry key= (Entry)it.next();
					content+=SEP1+key.getKey()+SEP2+key.getValue();
				}
				content=content.substring(content.indexOf(SEP1)+1);
			}
		}
		return content;
	}
}

//  class MD5Support {
//	private static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
//			'a', 'b', 'c', 'd', 'e', 'f' };
//	public final static String MD5(String s) {
//
//		try {
//			byte[] strTemp = s.getBytes("UTF-8");
//			//byte[] strTemp = s.getBytes();
//			MessageDigest mdTemp = MessageDigest.getInstance("MD5");
//			mdTemp.update(strTemp);
//			byte[] md = mdTemp.digest();
//			int j = md.length;
//			char str[] = new char[j * 2];
//			int k = 0;
//			for (int i = 0; i < j; i++) {
//				byte byte0 = md[i];
//				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
//				str[k++] = hexDigits[byte0 & 0xf];
//			}
//			return new String(str);
//		} catch (Exception e) {
//			return null;
//		}
//	}
//	public final static String MD5(String s,String encoding) {
//
//		try {
//			byte[] strTemp;
//			if(encoding!=null)
//				strTemp= s.getBytes(encoding);
//			else
//				strTemp= s.getBytes();
//			//byte[] strTemp = s.getBytes();
//			MessageDigest mdTemp = MessageDigest.getInstance("MD5");
//			mdTemp.update(strTemp);
//			byte[] md = mdTemp.digest();
//			int j = md.length;
//			char str[] = new char[j * 2];
//			int k = 0;
//			for (int i = 0; i < j; i++) {
//				byte byte0 = md[i];
//				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
//				str[k++] = hexDigits[byte0 & 0xf];
//			}
//			return new String(str);
//		} catch (Exception e) {
//			return null;
//		}
//	}
//}